/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sirafia_clases;

import java.sql.*;

/**
 *
 * @author dell
 */
public class Usuario {
    /*Contiene la cantidad de veces que se encontro el usuario en la BD*/

    private static int cant = 0;
    /*Contiene el nombre del usuario*/
    private static String Nombre = null;
    /*Contiene la contraseña del usuario*/
    private static String Contrasena = null;
    /*Contiene el nivel de acceso del usuario*/
    private static int Nivel = 0;

    /**
     * @return the cant
     */
    public static int getCant() {
        return cant;
    }

    /**
     * @param aCant the cant to set
     */
    public static void setCant(int aCant) {
        cant = aCant;
    }

    /**
     * @return the Nombre
     */
    public static String getNombre() {
        return Nombre;
    }

    /**
     * @param aNombre the Nombre to set
     */
    public static void setNombre(String aNombre) {
        Nombre = aNombre;
    }

    /**
     * @return the Contrasena
     */
    public static String getContrasena() {
        return Contrasena;
    }

    /**
     * @param aContrasena the Contrasena to set
     */
    public static void setContrasena(String aContrasena) {
        Contrasena = aContrasena;
    }

    /**
     * @return the Nivel
     */
    public static int getNivel() {
        return Nivel;
    }

    /**
     * @param aNivel the Nivel to set
     */
    public static void setNivel(int aNivel) {
        Nivel = aNivel;
    }

    /**
     * Método que permite saber si un usario existe en la bd
     * @param usu Login del usuario a buscar
     *
     */
    public static void buscaUser(String usu) throws Exception {
        Connection conn = null;
        CallableStatement calstm = null;
        try {
            conn = Conexion.conector();
            calstm = conn.prepareCall("{call public.ejemplo2(?,?)}");
            //Indica que es un parametro de entrada
            calstm.setString(1, usu);
            //Indica que es un parametro de salida
            calstm.registerOutParameter(2, Types.INTEGER);
            calstm.execute();
            conn.setAutoCommit(false);
            conn.commit();
            //Recupera el valor de la variable de salida que en esta caso esta en
            //la posicion 2
            cant = calstm.getInt(2);
            calstm.close();
            calstm = null;
            conn.close();
            conn = null;
        } catch (SQLException ex) {
            System.out.print(ex);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(ex.getMessage(), ex.getErrorCode()));
        } catch (Exception e) {
            System.out.print(e);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(e.getMessage(), 1));
        } finally {
            if (calstm != null) {
                try {
                    calstm.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                calstm = null;
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                conn = null;
            }
        }
    }

    public static void obtenerDatosUsuario(String usu) throws Exception {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = Conexion.conector();
            stmt = conn.createStatement();
            //rs = stmt.executeQuery("SELECT * FROM ejemplo3('"+usu+"') AS (\"nom\" character(50), \"niv\" integer, \"pass\" character(10))");
            while (rs.next()) {
               // Nombre = rs.getString("nom");
                //Nivel = rs.getInt("niv");
                //Contrasena = rs.getString("pass");
                System.out.println("Nombre " + rs.getString("nom"));
            }
            stmt.close();
            conn.close();
            conn = null;
        } catch (SQLException ex) {
            System.out.print(ex);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(ex.getMessage(), ex.getErrorCode()));
        } catch (Exception e) {
            System.out.print(e);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(e.getMessage(), 1));
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                stmt = null;
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                conn = null;
            }
        }
    }


    public static void numeros() throws Exception {
        Connection conn = null;
        CallableStatement calstm = null;
        try {
            conn = Conexion.conector();
            calstm = conn.prepareCall("{call public.sumar_tres_numeros(?,?,?,?,?)}");
            //Indica que es un parametro de entrada
            calstm.setInt(1, 1);
            calstm.setInt(2, 3);
            //Indica que es un parametro de salida
            calstm.registerOutParameter(3, Types.INTEGER);
            calstm.registerOutParameter(4, Types.INTEGER);
            calstm.registerOutParameter(5, Types.INTEGER);
            calstm.execute();
            conn.setAutoCommit(false);
            conn.commit();
            //Recupera el valor de la variable de salida que en esta caso esta en
            //la posicion 2
            System.out.println("Número 1: "+ calstm.getInt(3)+", Número 2: "+calstm.getInt(4)+", Número 3: "+calstm.getInt(5));


            calstm.close();
            calstm = null;
            conn.close();
            conn = null;
        } catch (SQLException ex) {
            System.out.print(ex);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(ex.getMessage(), ex.getErrorCode()));
        } catch (Exception e) {
            System.out.print(e);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(e.getMessage(), 1));
        } finally {
            if (calstm != null) {
                try {
                    calstm.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                calstm = null;
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                conn = null;
            }
        }
    }

     public static void buscaData(String usu) throws Exception {
        Connection conn = null;
        CallableStatement calstm = null;
        try {
            conn = Conexion.conector();
            calstm = conn.prepareCall("{call public.usuario(?,?,?,?)}");
            //Indica que es un parametro de entrada
            calstm.setString(1, usu);
            //Indica que es un parametro de salida
            calstm.registerOutParameter(2, Types.VARCHAR);
            calstm.registerOutParameter(3, Types.INTEGER);
            calstm.registerOutParameter(4, Types.VARCHAR);
            calstm.execute();
            conn.setAutoCommit(false);
            conn.commit();
            //Recupera el valor de la variable de salida que en esta caso esta en
            //la posicion 2
            System.out.println("Nombre: "+ calstm.getString(2)+", Nivel: "+calstm.getInt(3)+", Contraseña: "+calstm.getString(4));
            Nombre = calstm.getString(2);
                Nivel = calstm.getInt(3);
                Contrasena = calstm.getString(4);
            calstm.close();
            calstm = null;
            conn.close();
            conn = null;
        } catch (SQLException ex) {
            System.out.print(ex);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(ex.getMessage(), ex.getErrorCode()));
        } catch (Exception e) {
            System.out.print(e);
            throw new Exception(ClasificadorMsjExcepciones.verMensaje(e.getMessage(), 1));
        } finally {
            if (calstm != null) {
                try {
                    calstm.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                calstm = null;
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    System.out.print(e);
                }
                conn = null;
            }
        }
    }
}
